package com.mfhcd.facepay.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * @Author：张洪顺
 * @E-Mail: zhanghs@mfhcd.com
 * @Date：2019-10-14 13:17
 * @版权所有 © 现代金融控股（成都）有限公司
 * @描述： 签名加密工具类
 */
public class SignEncryptUtil {
    /**
     * SHA-256 加密
     * 使用 jdk 原生加密算法，转化成十六进制字符串
     * @param string String
     * @return String
     */
    public static String sha256(String string) {
        if (null == string) {
            return null;
        }
        String cipher = null;
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
            messageDigest.reset();
            messageDigest.update(string.getBytes());
            byte[] bytes = messageDigest.digest();
            cipher = bytesToHexString(bytes);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return cipher;
    }
    /**
     * Convert byte[] to hex string.
     * 将 byte 转换成 int ，然后利用 Integer.toHexString(int) 转换成十六进制字符串
     *
     * @param bytes byte[] data
     * @return hex string
     */
    public static String bytesToHexString(byte[] bytes) {
        StringBuilder stringBuilder = new StringBuilder();
        if (bytes == null || bytes.length <= 0) {
            return null;
        }
        for (byte b : bytes) {
            int v = b & 0xFF;
            String hv = Integer.toHexString(v);
            if (hv.length() < 2) {
                stringBuilder.append(0);
            }
            stringBuilder.append(hv);
        }
        return stringBuilder.toString();
    }
}
